<?php
/*
Plugin Name: z2gslider
Description: Clickable slider.
Version: 0.1
Author:Z2gtechnology
Author URI: http://z2gtechnology.com
 */


add_action('init','z2gslider_init');
add_action('add_meta_boxes','z2gslider_metaboxes');
// 10  c'est la priorité de lancement  duscript  et 2 le nombre de  parametre de la fonction
add_action('save_post','z2gslider_save_post',10,2);
add_action('manage_edit-z2gslide_columns','z2gslider_columnfilter');
add_action('manage_posts_custom_column','z2gslider_column');


/**
 * Ajoute une colonne dans la vue liste
 */
function z2gslider_columnfilter($columns){
    $thumb = array('thumbnail'=>'Images');
    $columns = array_slice($columns, 0, 1) + $thumb + array_slice($columns, 1, null);
    return $columns;
}

function z2gslider_column($column){
    if($column=="thumbnail"){
        global $post;
        echo edit_post_link(get_the_post_thumbnail($post->ID, 'thumbnail'), null, null, $post->ID);
    }
    
}

/*
 * fonction d'initialisation du caroussel
 */
function z2gslider_init(){
    
    $labels = array(
    'name' => 'slides',
    'singular_name' => 'slide',
    'add_new' => 'Ajouter un slider',
    'add_new_item' => 'Ajouter un nouveau slide',
    'edit_item' => 'Modifier un slide',
    'new_item' => 'Nouveau slide',
    'all_items' => 'Tous les slides',
    'view_item' => 'Voir le  slide',
    'search_items' => 'rechercher un slider',
    'not_found' =>  'Aucun slide trouvé',
    'not_found_in_trash' => 'Aucun slide trouvé  dans la corbeille', 
    'parent_item_colon' => '',
    'menu_name' => 'Slider'
  );

    
    register_post_type('z2gslide',array('public'=>true,
                       'labels'=>$labels,
                       'publicly_queryable'=>false,
                       'menu_position'=>9,
                       'capability_type'=>'post',
                       'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt'),
                       
        ));
    
    add_image_size('z2gslider','900','300',true);
    
}

/*
 * Permet de gerer  les metabox
 */
function z2gslider_metaboxes()
{
    add_meta_box("z2gslide", 'Lien','z2gslider_metabox','z2gslide', 'normal','high') ;
}

/**
 * Metabox  pour gere le lien
 */
function z2gslider_metabox($object)
{
    // ajout d'un token pour la securité 
    wp_nonce_field('z2gslider','z2gslider_nonce');
?>

<div class="meta-box-item-title">
    <h4>Lien de ce slide</h4>
</div>
<div class="meta-box-item-content">
    <input type="text" name="z2gslider_link"  style="width:100%" value="<?=  esc_attr(get_post_meta($object->ID,'_z2glink',true));?>">
</div>
<?php
    
}

function z2gslider_save_post($post_id,$post)
{
   // verificationde la presencedela variable dans le post et de  la securité  pour eviter  les injection par xss
    if(!isset($_POST['z2gslider_link'])|| !wp_verify_nonce($_POST['z2gslider_nonce'],'z2gslider'))
    {
         return $post_id;
    }
    $type =  get_post_type_object($post->post_type);
    if(!current_user_can($type->cap->edit_post))
    {
       return $post_id; 
    }
        update_post_meta($post_id, '_z2glink',$_POST['z2gslider_link']);
}


/*
 * Function  qui permet d'afficher  le caroussel
 */
function z2gslider_show($limit=10)
{
    // inclusion de jquery  et  de caroufredsel
    wp_enqueue_script('caroufredsel',plugins_url().'/z2gslider/js/jquery.carouFredSel-6.2.1-packed.js',array('jquery'),'6.2.1',true);
    $z2gslides = new WP_query("post_type=z2gslide&posts_per_page=$limit");
    //  modiifcation de la fonction wp_footer ,  le deuxiem parametre indique la priorité. ici 30 car il faut un nombre >20 puisque
    //wp_enqueue_script() sont lancer avec une priorité de 20
    add_action('wp_footer','z2gslider_script',30);
    echo "<div id='z2gslider'>";
   while($z2gslides->have_posts())
   {
     $z2gslides->the_post();
     global $post;
     echo '<a  style="display:block; float:left;  height: 300px;" href="'.esc_attr(get_post_meta($post->ID,'_z2glink',true)).'">';
     the_post_thumbnail('z2gslider');
     echo '</a>' ; 
   }
     echo "</div><div id='z2gslider_pagination'></div>";
}

/*
 * Cette fonction  appel le jquery  qui gere l'affichage du caroussel
 */
function z2gslider_script()
{
?>
<script type="text/javascript">
    (function($){
        $('#z2gslider').caroufredsel({
            pagination: "#z2gslider_pagination"
        });
    }
)(jQuery);
</script>
<?php    
}
?>
